Skip to main content

Estensione di un blocco funzione

Generale

L'estensione di un blocco funzione si basa sul concetto di ereditarietà nella programmazione orientata agli oggetti. A tale scopo un blocco funzionale derivato "estende" un blocco funzionale di base e riceve così le proprietà del blocco funzionale di base oltre alle proprie proprietà.

L'estensione di un blocco funzione significa:

  • Il blocco funzione derivato contiene tutti i dati ei metodi definiti dal blocco funzione di base. È possibile utilizzare un'istanza del blocco funzione di base in qualsiasi contesto in cui CODESYS si aspetta un blocco funzione del tipo di blocco funzione di base.

  • Il modulo funzione derivato può sovrascrivere i metodi definiti nel modulo funzione di base. Ciò significa: Il blocco funzione derivato può definire un metodo con lo stesso nome, ingressi e uscite definiti dal blocco funzione di base.

    Suggerimento: viene fornito il seguente supporto per questa sovrascrittura di metodi, azioni, proprietà e transizioni ereditate dal blocco di base. Se inserisci un metodo, un'azione, ecc. sotto il blocco di costruzione derivato, ottieni la finestra di dialogo aggiungi oggetto una casella combinata con una selezione dei metodi, azioni, ecc. utilizzati nel modulo base e può accettarli, solo per poi adattarli di conseguenza.

  • Il blocco funzione derivato non deve contenere una variabile del blocco funzione con lo stesso nome utilizzato dal blocco funzione di base. Il compilatore segnala questo come un errore.

    L'unica eccezione: se si utilizza una variabile nel blocco funzione di base come VAR_TEMP dichiarato, il blocco funzione derivato può definire una variabile con lo stesso nome. In questo caso il blocco funzione derivato non può più accedere alla variabile del blocco funzione base.

  • È possibile utilizzare le variabili e i metodi del blocco funzione di base nell'ambito del blocco funzione derivato utilizzando il SUPER- Indirizzare direttamente i puntatori.

Importante

L'ereditarietà multipla non è consentita.

Eccezione: un blocco funzione può implementare più interfacce e un'interfaccia può estendere altre interfacce.

Estensione di un blocco funzione di base con un nuovo blocco funzione

Presupposto: il progetto attualmente aperto dispone ad es. di un blocco funzionale di base POU_1(FB), che verrà ampliato con un nuovo modulo funzionale.

  1. Seleziona l'oggetto Applicazione nell'albero dei dispositivi e selezionare il comando di menu Progetto → Aggiungi oggetto → POU.

    Il dialogo Aggiungi POU si apre.

  2. Immettere un nome per il nuovo modulo funzione nel campo di immissione Cognome un, per esempio POU_Ex.

  3. Scegliere blocco funzione.

  4. Scegliere Avanzate e fare clic sul pulsante _cds_icon_input_assistent.png.

  5. Nell'helper per l'immissione, scegli dalla categoria blocchi funzione sotto Applicazione il POU(FB) che deve fungere, ad esempio, da blocco funzione di base POU_1 e fare clic ok.

  6. Opzionalmente puoi averne uno modificatore di accesso per il nuovo blocco funzione dalla casella combinata.

  7. Scegli dalla casella combinata linguaggio di attuazione Per esempio Testo strutturato (ST) fuori.

  8. clicca su Aggiungere a.

    CODESYS aggiunge il blocco funzione POU_Ex nell'albero dei dispositivi e si apre l'editor. La prima riga dice:

    FUNCTION_BLOCK POU_Ex EXTENDS POU_1

    Il blocco funzione POU_Ex estende il blocco funzione di base POU_1.

Estensione di un blocco funzione di base con un blocco funzione esistente

Presupposto: il progetto attualmente aperto dispone ad es. di un blocco funzionale di base POU_1(FB), e un altro modulo funzione, ad esempio POU_Ex(FB). Il blocco funzione POU_Ex(FB) dovrebbe avere anche le proprietà del blocco funzione di base. Questo significa: POU_Ex(FB) obbiettivo POU_1(FB) espandere.

  1. Fare doppio clic sul blocco funzione nella struttura dei dispositivi POU_Ex(FB).

    Si apre l'editor del blocco funzione.

  2. Espandi la voce della riga superiore esistente FUNCTION_BLOCK POU_Ex Con EXTENDS POU_1.

    Il blocco funzione POU_Ex amplia il blocco funzione di base POU_1.

Per ulteriori informazioni, vedere: Implementa un'interfaccia e Estendi un'interfaccia

Supporto di input durante la generazione di POU ereditari

Quando si esegue la programmazione orientata agli oggetti e si utilizza l'ereditarietà (EXTENDS parola chiave) delle POU, puoi ottenere assistenza come segue:

Quando si inserisce un'azione, una proprietà, un metodo o una transizione sotto una POU derivata da una POU di base, il Aggiungere … si apre la finestra di dialogo. Quindi il campo di input per il nome si estende a una casella di riepilogo. La casella di riepilogo contiene una selezione valida tra le azioni, le proprietà, i metodi o le transizioni disponibili nella POU di base. Ora puoi, ad esempio, accettare facilmente un metodo della POU di base e quindi adattarlo alla funzione derivata della POU.

Metodi e proprietà con il modificatore di accesso PRIVATE non sono elencati qui perché non sono nemmeno ereditati. Metodi e proprietà con il modificatore di accesso PUBLIC ottenere automaticamente un campo modificatore di accesso vuoto quando si accetta nella POU derivata, il che significa la stessa cosa dal punto di vista funzionale.

Per ulteriori informazioni, vedere: Proprietà, Metodo, Transizione, Azione,

Esempio 29. Esempio
_cds_img_input_wizzard_for_blocks.png